package com.itic.system.market.viptype.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.itic.appbase.applications.sys.common.service.OutCommonService;
import com.itic.appbase.framework.common.constants.DBConst;
import com.itic.appbase.framework.common.constants.IticConst;
import com.itic.appbase.framework.common.constants.ResponseCode;
import com.itic.appbase.framework.common.controller.BaseController;
import com.itic.appbase.framework.exception.definition.ParameterErrorException;
import com.itic.appbase.framework.utils.DateHelper;
import com.itic.appbase.framework.utils.StringHelper;
import com.itic.appbase.framework.utils.ValueHelper;
import com.itic.system.market.viptype.persistence.model.VipType;
import com.itic.system.market.viptype.persistence.model.VipTypeExample;
import com.itic.system.market.viptype.persistence.model.VipTypeExample.Criteria;
import com.itic.system.market.viptype.service.VipTypeService;


@Controller
@RequestMapping(value="/system/viptype")
public class VipTypeController
     extends BaseController {
    @Autowired
    private VipTypeService vipTypeService;
    @Autowired
   	protected OutCommonService outCommonService;
       
       //////////////////////////////////////////////////////常量区////////////////////////////////////////////////////////////////
       private static final String MODEL_NAME_CHINA = "vip管理";//中文名
       private static final String MODEL_NAME＿ENGLISH = "viptype";//英文名
       private static final String PAGE_COMMON_PATH = "edu/market/viptype/viptype";//通用路径
       private static final String COMMON_URL = "/system/viptype/";//通用路径
       
       //导出常量
       private static final String TEMP = "bzmc";//备注名称
       private static final String DATALIST = "dataList";//数据常量
       // 返回属性黑名单
       private static String[] ignoreProperties = new String[] { "createUser", "isEffective", "createTime", "updateTime",
               "orgCode" };


       //////////////////////////////////////////////////////页面跳转区////////////////////////////////////////////////////////////
      
       /*
        * 主页面
        */
       @RequestMapping(value="/init")
       public String init(Model model){
       	model.addAttribute("name_china", MODEL_NAME_CHINA);
       	model.addAttribute("name_english", MODEL_NAME＿ENGLISH);
       	model.addAttribute("common_url", COMMON_URL);
       	return PAGE_COMMON_PATH+"Main";
       }
       
       /*
        * 添加页面
        */
       @RequestMapping(value="/initAdd")
       public String initAdd(Model model){
       	model.addAttribute("name_china", MODEL_NAME_CHINA);
       	model.addAttribute("name_english", MODEL_NAME＿ENGLISH);
       	model.addAttribute("common_url", COMMON_URL);
       	return PAGE_COMMON_PATH+"Add";
       }
       
       /*
        * 编辑页面
        */
       @RequestMapping(value="/initEdit")
       public String initEdit(String id , Model model){
       	if( StringHelper.isNotBlank(id) ) {
       		VipType temp = vipTypeService.get(id);
       		model.addAttribute("editData",iticJsonMapper.toJson(temp));
       		model.addAttribute("name_china", MODEL_NAME_CHINA);
           	model.addAttribute("name_english", MODEL_NAME＿ENGLISH);
           	model.addAttribute("common_url", COMMON_URL);
       	}else {
               throw new ParameterErrorException();
           }
       	return PAGE_COMMON_PATH+"Edit";
       }
       
       /*
        * 查看页面
        */
       @RequestMapping(value="/initView")
       public String initView(String id , Model model){
       	if( StringHelper.isNotBlank(id) ) {
       		
       		VipType temp  = vipTypeService.get(id);
       		//temp.setCategory(outCommonService.getNameByCode(CATEGORY, temp.getCategory()));
       		
       		model.addAttribute("viewEdit",iticJsonMapper.toJson(temp));
       		model.addAttribute("name_china", MODEL_NAME_CHINA);
           	model.addAttribute("name_english", MODEL_NAME＿ENGLISH);
           	model.addAttribute("common_url", COMMON_URL);
       	}else {
               throw new ParameterErrorException();
           }
       	
       	return PAGE_COMMON_PATH+"View";
       }
       
       /*
        * 导入页面
        */
       @RequestMapping(value="/initImp")
       public String initImp(Model model){
       	model.addAttribute("name_china", MODEL_NAME_CHINA);
       	model.addAttribute("name_english", MODEL_NAME＿ENGLISH);
       	model.addAttribute("common_url", COMMON_URL);
       	return PAGE_COMMON_PATH+"Imp";
       }
       
       
       //////////////////////////////////////////////////////业务代码区////////////////////////////////////////////////////////////
       
       /**
        * 添加模板管理数据
        * @param android
        * @return
        */
       @RequestMapping(value="/add")
       @ResponseBody
       public Map<String,String> add(VipType temp){
       	
       	    Map<String, String> resultMap = new HashMap<String, String>();
            String result = ResponseCode.SERVER_ERROR.getCode();
            result = vipTypeService.add(temp);
            resultMap.put(IticConst.RESULT, result);
            return resultMap;
       }
       
       
       /**
        * <p>Title:queryCondition </p>
        * <p>Description:封装查询条件 </p>
        * @param jzdw
        * @param jzdwExample
        * @return
        */
       private VipTypeExample queryCondition(HttpServletRequest request,VipType temp,String startTime,String stopTime) {
       	
       	// 参数处理
           VipTypeExample example = new VipTypeExample();
           // 按创建时间倒序
           //example.setOrderByClause("create_time desc");
           // 按排列号顺序
           example.setOrderByClause("reorder asc");
           
           Criteria criteria = example.createCriteria().andIsEffectiveEqualTo( DBConst.TRUE );
         
           // 查询条件
           if ( null != temp ) {
        	    if( StringHelper.isNotBlank(temp.getShowDesc())){
        	    	criteria.andShowDescLike("%"+temp.getShowDesc()+"%");
        	    }
                if( StringHelper.isNotBlank(startTime) ){
      				criteria.andCreateTimeGreaterThanOrEqualTo(DateHelper.getDateByStringDate(startTime+IticConst.START_TIME_SUFFIX));
      			}
      			if( StringHelper.isNotBlank(stopTime) ){
      				criteria.andCreateTimeLessThanOrEqualTo(DateHelper.getDateByStringDate(stopTime+IticConst.END_TIME_SUFFIX));
      			}
           }
           return example;
       }
       
       /**
        * 
        * @param goldType
        * @param request
        * @return
        */
       @RequestMapping(value = "/list")
       @ResponseBody
       public Map<String, Object> list(VipType temp,String startTime,String stopTime, HttpServletRequest request){
           // 声明返回对象
           Map<String, Object> resultMap = new HashMap<String, Object>();
           
           
           VipTypeExample example = this.queryCondition(request,temp,startTime,stopTime);
           // 封装分页参数
           example = this.handlePageQuery(request, example);
           
           
           // 获取信息总条数
           int total = vipTypeService.count(example);
           
           // 获取数据
           List<VipType> list = vipTypeService.list(example);
           
           //结果集
           List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
           if( list.size() > 0 ){
               //过滤黑名单字段   
           	resultList = ValueHelper.tranList2MapList(list, ignoreProperties);
           }
           
           // 数据返回处理
           resultMap.put(IticConst.TOTAL_RECORDS, total);
           resultMap.put(IticConst.DISPLAY_RECORDS, total);
           resultMap.put(IticConst.RESULT, ResponseCode.SUCCESS.getCode());
           resultMap.put(IticConst.DATA, resultList);
           return resultMap;

       }
       
       /**
        * 编辑保存
        * @param Category
        * @return
        */
       @RequestMapping(value="/edit")
       @ResponseBody
       public Map<String,String> edit(String delFileIds , VipType temp){
       
       	 if( StringHelper.isNotBlank(delFileIds) ){
       		// 删除附件
       		outCommonService.deleteFiles(delFileIds);
       	 }
       	
       	 Map<String, String> resultMap = new HashMap<String, String>();
            String result = ResponseCode.SERVER_ERROR.getCode();
            //String unescapeXml = StringEscapeUtils.unescapeXml(temp.getStyleText());
            //temp.setStyleText(unescapeXml);
            result = vipTypeService.edit(temp);
            
            resultMap.put(IticConst.RESULT, result);
            return resultMap;
       }
       
       

       /**
        * 删除
        * 
        */
       @RequestMapping(value = "/del")
       @ResponseBody
       public Map<String, String> del(String id) {
           Map<String, String> resultMap = new HashMap<String, String>();
           String result = ResponseCode.SERVER_ERROR.getCode();

           //删除一个
           if( StringHelper.isNotBlank(id) ){
               VipType temp = new VipType();
               temp.setId(id);
               result = vipTypeService.delete(temp);
           }
           
           resultMap.put(IticConst.RESULT, result);
           return resultMap;
       }

}